package cn.infrabase.token;


/**
 * 令牌生成配置。
 *
 * @author Weimin Gao
 * @since 1.0.0
 **/
public interface TokenProperties {

	/**
	 * 返回令牌类型
	 *
	 * @return 令牌类型。
	 */
	TokenType getType();

	/**
	 * 返回令牌签名算法。
	 *
	 * @return 令牌签名算法。
	 */
	TokenSignatureAlgorithm getAlgorithm();

	/**
	 * 返回令牌签名密钥（签名算法为NONE时无须设置）。
	 *
	 * @return 令牌签名密钥。
	 */
	String getKey();

	/**
	 * 令牌有效时间单位秒（值小于等于0时表示永久有效）。
	 *
	 * @return 令牌有效时间单位秒。
	 */
	long getEfftime();

	/**
	 * 返回令牌签名密钥字节数组。
	 *
	 * @return 令牌签名密钥字节数组。
	 */
	default byte[] key() {
		if (getKey() != null) {
			return getKey().getBytes();
		}
		return null;
	}
}
